package tp1POO.Persistencia;

import java.util.List;
import java.util.Vector;
import tp1POO.Modelo.ObjetoPOO;

public abstract class DAOTexto implements DAO {

	/**
	 * Construtor padrao
	 */
	public DAOTexto() {
		gestor = new FileManager();
	}
	/**
	 * Apaga objeto do arquivo texto
	 * @param parObj Objeto a ser apagado
	 */
	@Override
	public void apagar(ObjetoPOO parObj) {
		gestor.ApagarObjeto(parObj.getIdentifier(), parObj.getClass().getSimpleName());
	}
	/**
	 * Busca objeto no arquivo texto
	 * @param parObj com o campo identificador preenchido
	 */
	@Override
	public ObjetoPOO encontrar(ObjetoPOO parObj) {
		return converterObj(gestor.ObterObjeto(parObj.getIdentifier(), parObj.getClass().getSimpleName()));
	}
	/**
	 * Lista todos objetos encontrados no arquivo correspondente do tipo especificado pelo parametro
	 * @param parObj Tipo de objeto a ser listado
	 */
	@Override
	public List<ObjetoPOO> listar(ObjetoPOO parObj) {
		Vector<String> vet = gestor.ObterObjetos(parObj.getClass().getSimpleName());
		Vector<ObjetoPOO> vetObjs = new Vector<ObjetoPOO>(); 
		while(!vet.isEmpty())
			vetObjs.add(converterObj(vet.remove(0)));
		return vetObjs;
	}

	protected FileManager gestor;
}
